﻿using System;

namespace Clock
{
    //定义一个委托类型，定义事件处理函数的格式
    public delegate void ClockHandler1(int x);
    public delegate void ClockHandler2(int h, int m, int s);
    public class Clock
    {
        //定义事件嘀嗒，相当于创建一个委托实例
        public event ClockHandler1 Tick;
        //定义事件响铃，相当于创建一个委托实例
        public event ClockHandler2 Alarm;
        //定义方法嘀嗒
        public void useTick(int x)
        {
            Console.WriteLine("调用useTick函数");
            //触发Tick事件
            Tick(x);
        }
        //定义方法响铃
        public void useAlarm(int h,int m,int s)
        {
            Console.WriteLine("调用useAlarm函数");
            //触发Alarm事件
            Alarm(h, m, s);
        }
    }

    public class Form
    {
        public Clock clock1 = new Clock();//获取一个时钟对象

        //Form类的构造函数
        public Form()
        {
            //为闹钟的事件添加处理方法
            //为Tick添加方法
            clock1.Tick += clockTick;
            //为Alarm添加方法
            clock1.Alarm += clockAlarm;
        }
        //Tick方法
        void clockTick(int x)
        {
            Console.WriteLine("触发Tick事件");
            Console.WriteLine($"闹钟以每{x}秒一次的速率嘀嗒");
        }
        //Alarm方法
        void clockAlarm(int h, int m, int s)
        {
            Console.WriteLine("触发Alarm事件");
            Console.WriteLine($"闹钟在{h}小时{m}分钟{s}秒响铃一次");
        }
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            Form form1 = new Form();
            form1.clock1.useTick(5);//调用clock的useTick方法，触发Tick事件
            form1.clock1.useAlarm(10, 31, 9);//调用clock的useAlarm方法，触发Alarm事件
        }
    }
}
